package com.qs.service;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * ClassName: IAsyncService
 * Package: com.qs.service
 * Description:
 *
 * @Author: @weixueshi
 * @Create: 2023/12/8 - 10:41
 * @Version: v1.0
 */
public interface IAsyncService {
    /**
     * 异步扣减库存
     * @param cartId
     */
    void deductionStock(Integer[] cartId,String orderId);

    /**
     * 异步删除已生成订单中的购物车数据
     * @param cartId
     */
    void deleteCartSelected(Integer[] cartId);

    /**
     * 用户支付订单后将状态修改为已支付
     * @param orderId
     */
    void updatePayInfo(String orderId,String paymentType);

    /**
     * 用户支付订单后保存记录
     * @param orderId
     * @param userId
     * @param cartIds
     */
    void saveUserGoodsLog(String orderId, Integer userId, Integer[] cartIds);

    /**
     * 将支付表的状态设置为待付款
     * @param orderId
     * @param userId
     */
    void savePayInfo(String orderId, Integer userId);

    /**
     * 保存订单和购物车记录
     * @param orderId
     * @param userId
     * @param cartIds
     */
    void saveOrderCart(String orderId, Integer userId, List<Integer> cartIds);

    /**
     * 将order_cart的记录删除
     * @param orderId
     * @param userId
     */
    void deleteOrderCart(String orderId, Integer userId);

    /**
     * 删除超时订单数据
     * @param orderId
     */
    void deleteOrderIdExpire(String orderId);

    /**
     * 将锁定的商品库存解锁
     * @param cartIds
     * @param orderId
     */
    void deductionLockStock(List<Integer> cartIds, String orderId);

    /**
     将用户状态设置为在线
     * @param request
     * @param userId
     */
    void changeUserOnlineStatus(HttpServletRequest request, int userId);

    /**
     * 将用户状态设置为离线
     * @param userId
     */
    void changeUserOfflineStatus(int userId);

    /**
     * 异步将商品浏览量+1
     * @param id
     */
    void incrementWithGoods(Integer id);
}
